home *** CD-ROM | disk | FTP | other *** search
- ε RATON π
-
- Me he decidido a escribir este artículo, porque mucha gente queda
- alucinada al ver algun trabajo que soporte ratón, cuando es una de las cosas
- más fáciles de hacer, y además muy efectiva, ya que da un toque de
- profesionalidad a nuestros programas con el mínimo esfuerzo.
- Cuando encendemos el ordenador, el driver del ratón se instala en
- la interrupción Γ33hπ de la tabla de interrupciones. Por lo tanto, para
- accder a las muchas funciones que nos proporciona el driver, sólo tendremos
- que poner en los registros los valores adecuados y llamar a la
- interrupción. (Si no sabéis que es la tabla de interrupciones, da igual,
- tampoco necesitais saberlo).
- Para empezar, usaremos la función Γ00hπ. Para llamarla, sólo tenemos
- que poner { φmov ax,00hπ
- φint 33hπ } El nº de la función siempre en ΓAXπ y al finalizar
- siempre llamar a la int Γ33πh
- Esta función hace un reset del ratón y nos devuelve dos valores: en Γaxπ,
- devuelve ∩FFFFhπ si hay un ratón instalado, y en Γbxπ el ∩nº de botonesπ que tiene.
- Una vez sabemos que el usuario tiene un ratón instalado, tenemos
- dos funciones para esconder o mostrar el cursor del ratón (si no lo cambiamos
- mostrará la flecha en modo gráfico y el rectángulo en modo texto).
- Para ver el ratón usaremos la función Γ1hπ (seguro que ya sabéis llamarla:
- φmov ax,01h; int 33hπ) y para esconderlo, la función Γ2hπ. Aunque el ratón no
- se vea, se sigue actualizando su posición.
- Otras funciones interesantes, de las que muchas que tenemos són:
- δPoner el ratón en una determinada posición π
- Γ función:0004hπ
- Γ cx=posx π
- Γ dx=posy π
- δLimitar el movimiento del ratón horizontalmenteπ
- Γ Función:0007hπ
- Γ cx,minxπ
- Γ dx,maxxπ
- δLimitar verticalmenteπ
- Γ Función:0008hπ
- Γ cx,minyπ
- Γ dx,maxyπ
-
- Ahora, para empezar a utilizar el ratón, sólo nos queda por ver la
- función que nos permitirá conocer su posición y si los botones están
- apretados. Esta función es la Γ03hπ, y nos devuelve cada vez que la llamamos:
- φ CX= posición x de la rataπ
- φ DX= posición y de la rataπ
- φ BX= Sus tres últimos bits (lsb) indican el estado de los botones.π
- ΩBit 0= botón izquierdo bit 1=botón derecho bit 2=botón centralπ
-
- Estos bits se ponen a uno cuando el botón está apretado, o sea que si bx
- vale 1 está apretado el botón izquierdo, si vale dos el derecho, si tres
- el izquierdo y el derecho al mismo tiempo...
- Tenemos que estar atentos a las coordenadas devueltas en ΓCXπ y ΓDXπ,
- ya que están en mickeys, que es la unidad de medida del ratón. Depende de que
- modo estemos utilizando, tendremos que hacer una conversión a nuestras
- coordenadas (por ejemplo en modo texto, tendremos que dividir las
- coordenadas por ocho, o lo que es lo mismo desplazar los registros tres bits
- a la derecha).
- Ahora que ya podemos utilizar el ratón en nuestras apliaciones, vamos
- a ver otra manera de controlar el ratón más avanzada,y lógicamente más
- difícil.
- Veremos como controlar el ratón mediante interrupción, con este
- método conseguimos, que el ratón actualize su posición automáticamente,
- y no tengamos que ir preguntando con la función anterior (método polling).
- Mediante este método podemos hacer que una función nuestra sea llamada por
- el driver del ratón cada vez que pase un suceso determinado. Esta función
- nuestra será la que actualizará las posiciones,y todas las demás cosas que
- queramos. Para hacer esto primero tendremos que instalar un controlador de
- eventos, al que tenemos que decir la función a la que queremos que llame
- y cuando tiene que llamarla.
- Γ Función : 0Chπ
- φ ES:DX : segmento y desplazamiento de nuestra funciónπ
- φ CX: máscara de eventosπ
- φ Significado de la máscaraπ
- φ bit 0: movimiento del ratónπ
- φ bit 1: pulsado botón izquierdoπ
- φ bit 2: soltado botón izquierdoπ
- φ bit 3: pulsado botón derecho π
- φ bit 4: soltado botón derechoπ
- φ bit 5: pulsado botón central π
- φ bit 6: soltado botón centralπ
- Como siempre se pueden hacer combinaciones, por ejemplo si ponemos
- cx=7 (1+2+4) nuestra función será llamada siempre que el ratón se mueva, o
- se pulse o suelte el botón izquierdo.
- Este controlador que hemos instalado, cada vez que llame a nuestra
- función, le pasará la siguiente información: en ΓAXπ tendremos información
- de los sucesos por los que ha sido llamada nuestra función y de otros sucesos
- que se hayan podido producir, con el mismo significado que la máscara
- de ΓCXπ que hemos visto antes. En ΓCXπ la posición X, en ΓDXπ la Y y en ΓBXπ
- el estado de los botones.
- Antes de acabar el programa tenemos que desinstalar el controlador,
- para hacer esto, lo más fácil és copiar la rutina de instalación, pero
- poniendo en CX un 0, así conseguimos que nuestra función no sea llamada nunca.
-
-
- Espero que os hayais enterado de algo y que os sea útil.
- Si tenéis alguna duda o comentario, podeís escribir a
- τ cabsagjo@eupmt.upc.esπ
- τ (eupmt=esculea universitaria politécnica de Mataró,π
- τ un poco de publicidad no va a hacer daño a nadie) π
-
- oε Jordi Cabotπ
- ε C/Josep Sabater 3π
- ε 08301 Mataróπ
- ε Barcelonaπ
-
-
- * Os pongo un ejemplo donde se ven algunas de las funciones explicadas,
- y el tema del controlador (lo teneis en el directorio "δratonπ").
-